1. ·
Os comandos de
fluxo de controle especificam a ordem em que a computação é realizada.
2. ·
Uma expressão
torna-se um comando quando seguida pelo símbolo ";". Exemplo:
x = 0; i++; printf(...);
3. ·
O símbolo
";" é um terminador de comandos e não um separador.
4. ·
O conjunto { }
agrupa declarações e comandos num bloco (comando composto), considerado como um
único comando.
5. ·
Variáveis podem ser
declaradas dentro de qualquer bloco.
6. ·
O comando if-else é usado para expressar
decisões (executar testes condicionais) no programa.
7. ·
Observe o programa
abaixo:
8.
/*
UFPB/CCT/DSC - Introducao a
Programacao/2001.1
Este programa determina o maior de um grupo
de 3 valores inteiros
Versao 1.0
*/
#include <stdio.h>
void main() {
/*declaracao de variaveis*/
int valor1, valor2, valor3;
const char prompt[] = "\nDigite 3
valores inteiros para localizar o maior\n(separe os valores com espaco):
";
clrscr();/*comando para limpar a tela*/
/*entrada de dados*/
printf("%s",
prompt);
scanf("%d %d %d",
&valor1, &valor2, &valor3);
/*processamento*/
if (valor1 > valor2) {
if (valor1 > valor3) {
printf("O maior valor entre %d
%d %d => %d", valor1, valor2, valor3, valor1);
} else {
printf("O maior valor entre %d
%d %d => %d", valor1, valor2, valor3, valor3);
}
} else
{
if
(valor2 > valor3) {
printf("O maior valor
entre %d %d %d => %d", valor1, valor2, valor3, valor2);
} else {
printf("O maior valor entre %d
%d %d => %d", valor1, valor2, valor3, valor3);
}
}
getch();
}
9. ·
Forma geral do
comando if-else:
if (expressão) {
comando1; /*bloco VERDADE*/
} else {
comando2; /*bloco FALSO*/
}
10.
· Onde, expressão é uma expressão lógica.
11.
· Uma expressão é verdadeira quando seu valor é diferente de zero,
nesse caso, executa-se o bloco VERDADE;
12.
· Por outro lado, uma expressão é tida como falsa quando seu valor é igual a zero,
nesse caso, executa-se o bloco FALSO.
13.
· É melhor usar:
if (expressão)
14.
· Ao invés de:
if (expressão != 0)
if (n > 0) if (n > 0)
if ( a > b) = if (a > b)
z = a; z = a;
else else
z
= b; z = b;
/*
UFPB/CCT/DSC - Introducao a
Programacao/2001.1
Este programa determina o maior de um grupo
de 3 valores inteiros
Versao 2.0
*/
#include <stdio.h>
#include <limits.h>
void
main() {
/*declaracao de variaveis*/
int valor1, valor2, valor3, maior;
const char prompt[] = "\nDigite 3
valores inteiros para localizar o maior\n(separe os valores com espaco):
";
/*INT_MIN: constante pre-definida da
linguagem, equivale ao valor minino de "int"*/
maior = INT_MIN;
clrscr();/*comando para limpar a tela*/
/*entrada de dados*/
printf("%s",
prompt);
scanf("%d %d %d",
&valor1, &valor2, &valor3);
/*processamento*/
if (valor1 > maior) {
maior = valor1;
}
if (valor2 > maior) {
maior = valor2;
}
if (valor3 > maior) {
maior = valor3;
}
/*saida de dados*/
printf("O maior valor entre %d %d %d
=> %d", valor1, valor2, valor3, maior);
getch();
}
15.
· A construção a seguir é a forma
mais genérica de se escrever uma decisão múltipla:
if (expressão1) {
comando1;
} else if
(expressão2) {
comando2;
}
else if (expressão3) {
comando3;
} else {
comando4;
}
16.
· O comando switch é uma estrutura de decisão múltipla.
17.
· Funcionalidade: verifica se o
valor da expressão coincide com um dentre vários valores inteiros constantes,
desviando o fluxo de execução de acordo com o resultado.
18.
· Observe o programa abaixo:
19.
· O comando break causa uma
saída imediata do switch (pode ser utilizado também em comandos de
repetição).
20.
· Forma geral do comando switch:
switch (expressão) {
case expressão-constante: comandos;
case expressão-constante: comandos;
. . .
default: comandos;
}
> >= < <=
==
!=
&&(and)
||(or) !(not)
10 > 5 && !(10 < 9) || 3 <=
4
O resultado da expressão acima é verdadeiro.
mais alta => |
Operadores aritméticos |
|
! |
|
== != |
|
> >=
< <= |
|
&& |
mais baixa => |
|| |
!0 && 0 || |
!(0 && 0) || 0 |
é falso |
é verdadeiro |
/*
UFPB/CCT/DSC - Introducao a
Programacao/2001.1
Este programa determina o maior de um grupo
de N valores inteiros
Versao 3.0
*/
#include <stdio.h>
#include <limits.h>
void
main() {
/*declaracao de variaveis*/
int valor, maior;
char resposta = 's';
const char prompt[] = "\nDigite os
valores inteiros para localizar o maior:";
const char prompt2[] = "\nOutro
valor?\n(tecle \'s\' para sim e \'n\' para terminar): ";
/*INT_MIN: constante pre-definida da
linguagem, equivale ao valor minino de "int"*/
maior = INT_MIN;
clrscr(); /*comando para limpar a tela*/
/*processamento*/
printf ("%s", prompt);
while (resposta == 's') {
printf("\nValor: ");
scanf("%d", &valor);
if (valor > maior)
maior = valor;
printf("%s", prompt2);
scanf(" %c", &resposta);
}
/*saida de dados*/
printf ("\nMaior valor digitado =>
%d", maior);
getch();
}
while (expressão) {
comandos;
}
21.
· Note que, o bloco de comandos do
while será repetido até que o resultado da avaliação de expressão seja diferente de zero.
22.
· Representação de um laço
infinito com o comando while:
while(1) {
comandos;
}
23.
· Outra versão do programa para
encontrar o maior valor:
24.
/*
UFPB/CCT/DSC - Introducao a
Programacao/2001.1
Este programa determina o maior de um grupo
de 3 valores inteiros
Versao 4.0
*/
#include <stdio.h>
#include <limits.h>
void
main() {
/*declaracao de variaveis*/
int valor, maior, i;
const char prompt[] = "\nEntrada dos 10
valores inteiros para localizar o maior...";
const char prompt2[] = "\nInforme um
valor: ";
/*INT_MIN: constante pre-definida da
linguagem, equivale ao valor minino de "int"*/
maior = INT_MIN;
clrscr();/*comando para limpar a tela*/
/*processamento*/
printf ("%s", prompt);
for (i = 0; i <
10; i++) {
printf("%s",
prompt2);
scanf("%d",
&valor);
if (valor > maior)
maior = valor;
}
/*saida de dados*/
printf("\nMaior valor digitado =>
%d", maior);
getch();
}
25.
· Forma geral do comando for:
for(expr-1; expr-2; expr-3){
comandos;
}
26.
· Onde:
27.
expr-1 => inicialização da variável
de controle;
28.
expr-2 => teste sobre a variável de
controle;
29.
expr-3 => atualização
(incremento/decremento) do valor da variável de controle.
30.
for (;;) {
comandos;
}
expr-1;
while
(expr-2) {
comandos;
expr-3;
}
31.
· O comando for é claramente preferível ao comando while quando há inicializações
e reinicializações.
32.
· Além disso, utiliza-se o comando
for quando o número de repetições é conhecido; e o comando while,
caso contrário.
33.
· O operador "," é
freqüentemente usado no comando for. Seu efeito é fazer com que várias
expressões sejam avaliadas da esquerda para a direita.
34.
· O comando do-while é
semelhante ao comando while, sendo que, o teste (avaliação da expressão)
acontece no final da execução do seu bloco de comandos.
35.
· Forma geral do comando do-while:
do {
comando;
} while (expressão);
36.
· O break permite a
saída antecipada do laço ou switch.
37.
· Um break faz com que o
laço (ou switch) mais interno seja terminado imediatamente.
38.
· O comando continue inicia a próxima iteração do laço.
39.
· Dentro do while e do do-while,
o continue desvia para o teste; dentro do for, desvia para a execução da próxima reinicialização (expr-3).
1 – Série de Fibonacci (código)
2 – Divisores de um número N (código)
3 – Números primos (código)
4 – Calculadora (código)